#include <stdio.h>
#include <string.h>

char str[110];
int best;
int l;
int now;

int main() {
	gets(str);
	l = strlen(str);

	for (int i=0; i<l ;i++) {
		//comeco da primeira string

		for (int j=i+1; j<l; j++) {
			now = 0;

			for (int k=0; ; k++) {
				if ((i+k)<l && (j+k)<l) {
					if (str[i+k]!=str[j+k]) break;
					else now++;
				}
				else break;
			}

			if (best<now) best = now;
		}
	}

	printf("%d\n", best);
	

	return 0;
}

